package com.camartsApp.service;

import com.camartsApp.entity.User;

/**
 * @version .......
 * @创建时间 2025/6/12  下午4:04
 * @创建者 玉苏甫江
 */

public interface UserService {

	/**
	 * 用户注册
	 * @param user 用户注册信息
	 * @return 注册结果描述（如"注册成功"、"手机号已被注册"等）
	 */
	String register(User user);

	/**
	 * 用户登录
	 * @param phone 手机号
	 * @param password 密码
	 * @return 登录成功后返回token，失败返回null
	 */
	String login(String phone, String password);

	/**
	 * 用户登出
	 * @param phone 手机号
	 */
	void logout(String phone);



	boolean updateAvatar(String phone, String avatarUrl);

	/**
	 * 根据手机号获取用户信息
	 * @param phone 手机号
	 * @return 用户信息对象，查无返回null
	 */
	User getUserInfo(String phone);

	/**
	 * 修改用户信息（除了头像、密码、手机号、邮件，其他字段可更改）
	 * @param user 修改后的用户对象（必须包含phone作为主键）
	 * @return 是否修改成功
	 */
	boolean updateUserInfo(User user);

	/**
	 * 修改密码，成功时生成新token，删除旧token并保存新token到redis
	 *
	 * @param phone       手机号
	 * @param oldPassword 旧密码
	 * @param newPassword 新密码
	 * @param oldToken    旧token
	 * @return 新token，失败返回null
	 */
	boolean updatePassword(String phone, String oldPassword, String newPassword, String oldToken);

	/**
	 * 修改手机号，成功时生成新token，删除旧token并保存新token到redis
	 *
	 * @param oldPhone 旧手机号
	 * @param password 当前密码
	 * @param newPhone 新手机号
	 * @param oldToken 旧token
	 * @return 新token，失败返回null
	 */
	User updatePhone(String oldPhone, String password, String newPhone, String oldToken);

	/**
	 * 修改邮箱
	 *
	 * @param phone    手机号
	 * @param password 当前密码
	 * @param newEmail 新邮箱
	 */
	 boolean updateEmail(String phone, String password, String newEmail);

	User getUserInfoByPhone(String phone);
}